<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <!-- 整理以下数组方法，写出数组方法的解释，并使用
      1. reduce
      2. filter
      3. some
      4. every
      5. map
    -->
    <script>
      const arr = [2, 5, 6, 8, 4, 6]
      // 1. reduce
      // let 结果 = 数组.reduct(累加器, 初始化值)
      // //累加器
      // (累加结果, 当前值, 当前索引)=>{
      // 	return 处理结果
      // }
      let sum = arr.reduce((prev, cur, index) => {
        return prev + cur
      }, 0)
      console.log(sum) //31

      // 2. filter
      // filter用于对数组进行过滤。
      // 里面包装函数
      // 它创建一个新数组，新数组中的元素是通过检查指定数组中符合条件的所有元素。
      let res = arr.filter((arr) => arr > 5)
      console.log(res) //(3) [6, 8, 6]
      // 3.some
      // 参数1：function(currentValue, index,arr)
      // 必须。函数，数组中的每个元素都会执行这个函数。
      // 一真则为真
      let resS = arr.some((arr) => arr > 3)
      console.log(resS) //ture
      // 4.every
      // 一假则为假
      let resE = arr.every((arr) => arr > 3)
      console.log(resE) //false
      // 5.map
      // 遍历数组需要结果去接收返回值
      const resM = arr.map((item) => item + 1)
      console.log(resM) //(6) [3, 6, 7, 9, 5, 7]

      // 整理出来以下会改变原数组的数组方法
      // 1.push
      arr.push(3) //在函数的最后面添加元素
      console.log(arr) //[2, 5, 6, 8, 4, 6, 3]
      // 2pop
      arr.pop() //删除函数最后面的元素
      console.log(arr) //[(2, 5, 6, 8, 4, 6)]
      // 3unshift
      arr.unshift(9) //在函数的最前面添加元素
      console.log(arr) //[9, 2, 5, 6, 8, 4, 6]
      // 4shift
      arr.shift() //删除函数最前面的元素
      console.log(arr) //[2, 5, 6, 8, 4, 6]
      // 5.sort
      arr.sort() //对数组进行从小到大排序
      console.log(arr)
      // 6.reverse
      arr.reverse() //对数组进行从大到小排序
      console.log(arr)
      // 7.splice
      arr.splice(2, 1, 66) //删除第几项几个添加
      console.log(arr) //[8, 6, 66, 5, 4, 2]
    </script>
  </body>
</html>
